package cn.iocoder.yudao.module.resource.dal.mysql.tag;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.resource.controller.admin.tag.vo.TagPageReqVO;
import cn.iocoder.yudao.module.resource.dal.dataobject.tag.TagDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.ArrayList;
import java.util.List;

/**
 * 标签 Mapper
 *
 * @author 芋道源码
 */
@Mapper
public interface TagMapper extends BaseMapperX<TagDO> {

    default PageResult<TagDO> selectPage(TagPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<TagDO>()
                .likeIfPresent(TagDO::getTagName, reqVO.getTagName())
                .eqIfPresent(TagDO::getClassifyId, reqVO.getClassifyId())
                .betweenIfPresent(TagDO::getCreateTime, reqVO.getCreateTime())
                .orderByDesc(TagDO::getId));
    }

    default TagDO getOne(String tagName) {
        LambdaQueryWrapperX<TagDO> queryWrapperX = new LambdaQueryWrapperX<>();
        queryWrapperX.eq(TagDO::getTagName, tagName);
        return this.selectOne(queryWrapperX);
    }

    default List<TagDO> getTagByNames(List<String> tags) {
        if (tags == null || tags.isEmpty()) {
            return new ArrayList<>();
        }
        LambdaQueryWrapperX<TagDO> queryWrapperX = new LambdaQueryWrapperX<>();
        queryWrapperX.in(TagDO::getTagName, tags);
        return this.selectList(queryWrapperX);
    }

}